interface T { x: number; }

interface T{ x: number; }

interface T                          { x: number; }

interface A extends B, C { x: number; };

interface A extends B<T1>, C<T2> { x: number; };

export interface W<T> {
  x: T;
}

namespace JSX {
  interface Array<T> {
    foo(x: (x: number) => T): T[];
  }
}

global {
  interface Array<T> {
    foo(x: (x: number) => T): T[];
  }
}

declare global {
  interface Array<T> {
    foo(x: (x: number) => T): T[];
  }
}

export default interface Test {
  bar(): string;
  foo(): number;
}

export declare interface Test {
  foo: string;
  bar: string;
}

declare global {
  namespace Foo {
    interface Bar {}
  }
}
